<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>示例7</title>
    <script>
        // ------------- 代码1 ===和Object.is的相同之处 ------------- 
        // Object.is()比较两个值是否严格相等，与（===）的行为基本一致。 
        console.log("'1' == 1", '1' == 1); // true 
        // 类型不一致，结果都是false 
        console.log("'1' === 1", '1' === 1); // false 
        console.log("Object.is(1, '1')", Object.is(1, '1')); // false 
        // 类型一致，结果才是true 
        console.log("'1' === '1'", '1' === '1'); // true 
        console.log("Object.is('1', '1')", Object.is('1', '1')); // true 

        // {}创建了新对象，所以两个{}内存地址是不相等的 
        console.log("{} === {}", {} === {}); // false 
        console.log("Object.is({},{})", Object.is({}, {})); // false 

        // ------------- 代码2 ===和Object.is的不同之处 ------------- 
        // NaN与任何值都不相等包括自身，所以（===）会返回false 
        console.log("NaN === NaN", NaN === NaN); // false 
        // 但是Object.is方法比较则会返回true 
        console.log("Object.is(NaN, NaN)", Object.is(NaN, NaN)); // true 

        // +0和-0（===）认为相等，但是Object.is方法认为不相等 
        console.log("+0 === -0", +0 === -0); // true 
        console.log("Object.is(+0, -0)", Object.is(+0, -0)); // false 
    </script>
</head>
<body></body>
</html>